package com.raos.quartz.third;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * ThirdScheduler
 *
 * @author raos
 * @email 991207823@qq.com
 * @date 2021/10/01 20:15
 */
public class ThirdScheduler {

    public static void main(String[] args) throws SchedulerException, InterruptedException {
        // 创建一个jobDetail的实例
        JobDetail jobDetail = JobBuilder.newJob(ThirdJob.class)
                .withIdentity("ThirdJob").build();

        //开始时间 3秒钟之后  （具体时间按实际业务编写）
        Date startTime = new Date();
        startTime.setTime(startTime.getTime() + 2000);
        //结束时间 6秒钟之后  （具体时间按实际业务编写）
        Date endTime = new Date();
        endTime.setTime(endTime.getTime() + 10000);
        // 创建一个Trigger触发器的实例
        SimpleTrigger trigger = TriggerBuilder.newTrigger()
                .startAt(startTime)
                .endAt(endTime)
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5)
                        .repeatForever())
                .build();
        // 创建schedule实例
        StdSchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail, trigger);
        // 线程阻塞15秒
        TimeUnit.SECONDS.sleep(15);
        //shutdown(true)表示等待所有正在执行的job执行完毕之后，再关闭scheduler
        //shutdown(false)即shutdown()表示直接关闭scheduler
        scheduler.shutdown(true);
    }

}
